/**
 * 重构后的公用js
 * @author zhuqiang
 * @version V0.1
 * @date 2016/7/15
 */
var Comm = {
    config:{},
    /** 工具方法 */
    util:{},
    ajax:{
        errAlert: function (er) {
            MrcodeUi.Alert.sx.danger("发生了一个错误:" + JSON.stringify(er))
        },
        /** 处理公共的restful返回结果处理 */
        resultHander:function (res,succes200_0,successNot200_err,not200_success,not200_err) {
            var status = res.status;
            var code = res.code;
            var msg = res.msg;
            var data = res.data;
            if (status == 200) {
                if ("0" == code) {
                    succes200_0(code,msg,data);
                } else {
                    if(successNot200_err){
                        successNot200_err(code,msg,data);
                    }else{
                        side.ajaxErrAlert(msg);
                    }
                }
            } else {
                if ("0" == code) {
                    if(not200_success){
                        not200_success(code,msg,status,data);
                    }else{
                        side.ajaxErrAlert(msg);
                    }
                }else{
                    if(not200_err){
                        not200_err(code,msg,status,data);
                    }else{
                        Comm.ajax.errAlert(msg);
                    }
                }
            }
        },
    },
    /** ui相关 */
    Ui:{
        /** 组件延迟加载特效 */
        init_lzLoad:function () {
            var fadeElems = $(".art-fade"),
                fadeElemsLength = fadeElems.length,
                i = 0,
                interval = 50;

            function incFade() {
                if (i < fadeElemsLength) {
                    fadeElems[i].className += ' art-fade-load';
                    i++;
                    setTimeout(incFade, interval);
                }
            }
            setTimeout(incFade, interval);
        },
        /** tips提示组件初始化 */
        init_tooltip:function () {
            $('[data-toggle="tooltip"]').tooltip();
        },
        Jq_Validate:{
            errorElement: 'span',  //错误标签元素
            errorClass: "text-danger",  //错误标签和输入标签的class名称: 限制form表单的高度为59，就能不被挤压
            // errorElement: 'label',  //错误标签元素
            // errorClass: "control-label",  //错误标签和输入标签的class名称
            /**
             * 本站公用 validate插件 校验错误信息位置样式处理：错误处理
             * @param error 错误标签
             * @param element 被校验的元素标签
             */
            errorPlacement:function (error, element) {
                var warpDiv = element.parent("div"); //顶层控制css元素
                if (warpDiv.is('.has-success')) {
                    warpDiv.removeClass('has-success');
                }
                if (!warpDiv.is('.has-error')) {
                    warpDiv.addClass('has-error');
                }
                var nextIcon = element.next('.glyphicon');//图标元素
                if (nextIcon.is('.glyphicon-ok')) {
                    nextIcon.removeClass('glyphicon-ok');
                }
                if (!nextIcon.is('.glyphicon-remove')) {
                    nextIcon.addClass('glyphicon-remove');
                }
                error.appendTo(element.parent("div"));  //添加元素，然后隐藏
            },
            /**
             * 本站公用 validate插件 校验错误信息位置样式处理,成功处理
             * @param label 错误标签
             */
            success:function (label) {
                var warpDiv = label.parent('div'); //顶层控制css样式元素
                if (warpDiv.is('.has-error')) {
                    warpDiv.removeClass('has-error');
                }
                if (!warpDiv.is('.has-success')) {
                    warpDiv.addClass('has-success');
                }

                var nextIcon = label.prev('.glyphicon')//图标元素
                if (nextIcon.is('.glyphicon-remove')) {
                    nextIcon.removeClass('glyphicon-remove');
                }
                if (!nextIcon.is('.glyphicon-ok')) {
                    nextIcon.addClass('glyphicon-ok');
                }
                label.remove();
            }
        },
        /** 使用带图标的样式 */
        Jq_ValidateGroup:{
            errorElement: 'span',  //错误标签元素
            errorClass: "text-danger",  //错误标签和输入标签的class名称: 限制form表单的高度为59，就能不被挤压
            /**
             * 本站公用 validate插件 校验错误信息位置样式处理：错误处理
             * @param error 错误标签
             * @param element 被校验的元素标签
             */
            errorPlacement:function (error, element) {
                var warpDiv = element.parent("div"); //顶层控制css元素
                if (warpDiv.is('.has-success')) {
                    warpDiv.removeClass('has-success');
                }
                if (!warpDiv.is('.has-error')) {
                    warpDiv.addClass('has-error');
                }
                var nextIcon = element.next('.form-control-feedback');//图标元素：与非Group的不同之处修改：glyphicon是一套图标，如果使用了此系列图标，将会出现定位错误
                if (nextIcon.is('.glyphicon-ok')) {
                    nextIcon.removeClass('glyphicon-ok');
                }
                if (!nextIcon.is('.glyphicon-remove')) {
                    nextIcon.addClass('glyphicon-remove');
                }
                // error.appendTo(element.parent("div"));  //添加元素，然后隐藏
                //与非Group的不同之处修改：和上面唯一不一样的地方就是这里把错误元素添加到了 input-group外，不然会把图片栏撑高
                error.appendTo(element.parent("div").parent("div"));
            },
            /**
             * 本站公用 validate插件 校验错误信息位置样式处理,成功处理
             * @param label 错误标签
             */
            success:function (label) {
                // var warpDiv = label.parent('div'); //顶层控制css样式元素
                var warpDiv = label.prev('div'); //与非Group的不同之处修改：控制input的顶层元素
                if (warpDiv.is('.has-error')) {
                    warpDiv.removeClass('has-error');
                }
                if (!warpDiv.is('.has-success')) {
                    warpDiv.addClass('has-success');
                }

                var nextIcon = warpDiv.find('.form-control-feedback')//与非Group的不同之处修改：元素标签位置改变了
                if (nextIcon.is('.glyphicon-remove')) {
                    nextIcon.removeClass('glyphicon-remove');
                }
                if (!nextIcon.is('.glyphicon-ok')) {
                    nextIcon.addClass('glyphicon-ok');
                }
                label.remove();
            }
        }
    },
}
